import fieldTypes from '../../utils/field-types-desc';

const fieldType = fieldTypes.find(({ code }) => code === 'date') || {};

export default {
    attributes: [
        {
            params: 'v-model',
            des: '绑定值',
            type: fieldType.valueType,
            values: '-',
            defaultVal: '-',
        },
        {
            params: 'props',
            des: '表单元素配置; 详细配置请查看下方【props 配置项】',
            type: 'Object',
            values: '-',
            defaultVal: '-',
            details: [
                {
                    title: '配置项【props】',
                    configList: [
                        {
                            params: 'type',
                            des: '表单项控件的类型（日期、日期时间、日期区间选择框等）',
                            type: 'String',
                            values: '-',
                            defaultVal: '请查阅下方【type】枚举值说明',
                            details: [
                                {
                                    title: '枚举值【type】',
                                    size: 'small',
                                    stripe: true,
                                    tableColumn: [
                                        { label: '枚举值', code: 'enum', width: 150 },
                                        { label: '控件类型', code: 'enumValue', width: 250 },
                                        { label: '控件说明', code: 'des' },
                                    ],
                                    configList: [
                                        {
                                            enum: 'year',
                                            enumValue: '年份选择',
                                            des: '该控件的绑定值类型为 String | Number | Date（取决于日期格式化规则 valueFormat）',
                                        },
                                        {
                                            enum: 'month',
                                            enumValue: '月份选择',
                                            des: '该控件的绑定值类型为 String | Number | Date（取决于日期格式化规则 valueFormat）',
                                        },
                                        {
                                            enum: 'monthrange',
                                            enumValue: '月份区间选择',
                                            des: '该控件的绑定值类型为 String[] | Number[] | Date[]（取决于日期格式化规则 valueFormat）',
                                        },
                                        {
                                            enum: 'week',
                                            enumValue: '周选择',
                                            des: '该控件的绑定值类型为 String | Number | Date（取决于日期格式化规则 valueFormat）',
                                        },
                                        {
                                            enum: 'date',
                                            enumValue: '日期选择（单选）',
                                            des: '该控件的绑定值类型为 String | Number | Date（取决于日期格式化规则 valueFormat）',
                                        },
                                        {
                                            enum: 'dates',
                                            enumValue: '日期选择（多选）',
                                            des: '该控件的绑定值类型为 String[] | Number[] | Date[]（取决于日期格式化规则 valueFormat）',
                                        },
                                        {
                                            enum: 'daterange',
                                            enumValue: '日期区间选择',
                                            des: '该控件的绑定值类型为 String[] | Number[] | Date[]（取决于日期格式化规则 valueFormat）',
                                        },
                                        {
                                            enum: 'datetime',
                                            enumValue: '日期时间选择',
                                            des: '该控件的绑定值类型为 String | Number | Date（取决于日期格式化规则 valueFormat）',
                                        },
                                        {
                                            enum: 'datetimerange',
                                            enumValue: '日期时间区间选择',
                                            des: '该控件的绑定值类型为 String[] | Number[] | Date[]（取决于日期格式化规则 valueFormat）',
                                        },
                                    ],
                                },
                            ],
                        },
                        {
                            params: 'value',
                            des: '表单项控件的默认值，若绑定值为空，将获取该值作为初始值',
                            type: fieldType.valueType,
                            values: '-',
                            defaultVal: '-',
                        },
                        {
                            params: 'size',
                            des: '尺寸大小',
                            type: 'String',
                            values: '"large" | "default" | "small"',
                            defaultVal: '"default"',
                        },
                        {
                            params: 'disabled',
                            des: '是否禁用',
                            type: 'Boolean',
                            values: 'true | false',
                            defaultVal: 'false',
                        },
                        {
                            params: 'readonly',
                            des: '是否只读',
                            type: 'Boolean',
                            values: 'true | false',
                            defaultVal: 'false',
                        },
                        {
                            params: 'editable',
                            des: '文本框是否可输入（日期多选和周选择不支持输入）',
                            type: 'Boolean',
                            values: 'true | false',
                            defaultVal: 'true',
                        },
                        {
                            params: 'placeholder',
                            des: '输入框占位提示',
                            type: 'String',
                            values: '-',
                            defaultVal: '"请选择"',
                        },
                        {
                            params: 'startPlaceholder',
                            des: '范围选择控件的起始时间的占位提示',
                            type: 'String',
                            values: '-',
                            defaultVal: '"请选择"',
                        },
                        {
                            params: 'endPlaceholder',
                            des: '范围选择控件的结束时间的占位提示',
                            type: 'String',
                            values: '-',
                            defaultVal: '"请选择"',
                        },
                        {
                            params: 'clearable',
                            des: '是否展示清空图标',
                            type: 'Boolean',
                            values: 'true | false',
                            defaultVal: 'true',
                        },
                        {
                            params: 'maxlength',
                            des: '最大可选日期的数量；该字段只针对 日期选择器（多选）有效（type 为 "dates"）',
                            type: 'Number',
                            values: '-',
                            defaultVal: '-',
                        },
                        {
                            params: 'allowedCheckSameDate',
                            des: '是否允许勾选同一天，仅针对范围类型的控件（目前仅支持 daterange |datetimerange）',
                            type: 'Boolean',
                            values: 'true | false',
                            defaultVal: 'true',
                        },
                        {
                            params: 'allowedRangeDays',
                            des: '设置勾选日期的区间跨度，控制最多允许选择多少天；仅针对范围类型的控件（目前仅支持daterange/datetimerange），0 表示不限制',
                            type: 'Number',
                            values: '-',
                            defaultVal: '0',
                        },
                        // {
                        //     params: 'defaultValue',
                        //     des: '可选，选择器打开时默认显示的时间',
                        //     type: 'Date | [Date, Date]',
                        //     values: '-',
                        //     defaultVal: '-',
                        // },
                        {
                            params: 'defaultTime',
                            des: '选择日期时展示的默认时刻，仅对 "datatime" 和 "datetimerange" 有效',
                            type: 'String | Date | [String, String] | [Date, Date]',
                            values: '"09:30:56" | new Date() | ["09:30:56", "12:30:25"] | [new Date(), new Date()]（取决于是否区间选择）',
                            defaultVal: '-',
                        },
                        {
                            params: 'format',
                            des: '输入框展示值的格式化规则',
                            type: 'String',
                            values: '请查阅下表-格式化规则',
                            defaultVal: 'YYYY-MM-DD（不同类型控件的默认规则存在差异，此处列举的是 type = "date"）',
                        },
                        {
                            params: 'valueFormat',
                            des: '绑定值的格式化规则',
                            type: 'String',
                            values: '请查阅下表-格式化规则',
                            defaultVal: 'YYYY-MM-DD（不同类型控件的默认规则存在差异，此处列举的是 type = "date"）',
                        },
                        {
                            params: 'disabledDate',
                            des: '一个用来判断该日期是否被禁用的函数，接受一个 Date 对象作为参数。 应该返回一个 Boolean 值',
                            type: 'Function(Date)',
                            values: '-',
                            defaultVal: '-',
                        },
                        {
                            params: 'shortcuts',
                            des: '设置快捷选项，需要传入数组',
                            type: 'Object[]',
                            values: 'Array<{ text: string, value: Date | Function }>',
                            defaultVal: '-',
                        },
                        {
                            params: 'unlinkPanels',
                            des: '在范围选择器里取消两个日期面板之间的联动',
                            type: 'Boolean',
                            values: 'true | false',
                            defaultVal: 'false',
                        },
                        {
                            params: 'rangeSeparator',
                            des: '范围选择控件的分隔符',
                            type: 'String',
                            values: '-',
                            defaultVal: '"-"',
                        },
                        {
                            params: 'prefixIcon',
                            des: '自定义前缀图标',
                            type: 'String | Component',
                            values: '-',
                            defaultVal: '"Date"',
                        },
                        {
                            params: 'popperClass',
                            des: '选择器下拉菜单的自定义类名',
                            type: 'String',
                            values: '-',
                            defaultVal: '-',
                        },
                        {
                            params: 'teleported',
                            des: '是否将 date-picker 的下拉列表插入至 body 元素',
                            type: 'Boolean',
                            values: 'true | false',
                            defaultVal: 'true',
                        },
                        {
                            params: 'cellClassName',
                            des: '设置日期的自定义类名',
                            type: 'Function(Date)',
                            values: '-',
                            defaultVal: '-',
                        },
                        {
                            params: 'unit',
                            des: '控件尾部的单位文案配置',
                            type: 'String',
                            values: '-',
                            defaultVal: '-',
                        },
                        {
                            params: 'validateEvent',
                            des: '输入时是否触发表单的校验',
                            type: 'Boolean',
                            values: 'true | false',
                            defaultVal: 'true',
                        },
                    ],
                },
            ],
        },
    ],
    events: [
        {
            name: 'change',
            des: '输入框失焦后值内容修改触发的事件',
            params: '({ value, label, data }, props)',
        },
        {
            name: 'focus',
            des: '输入框聚焦事件',
            params: '(value, props, event)',
        },
        {
            name: 'blur',
            des: '输入框失焦事件',
            params: '(value, props, event)',
        },
        {
            name: 'calendar-change',
            des: '当日历所选的日期更改时触发。 仅适用于 daterange、datetimerange',
            params: '(value, props, val: [Date, Date])',
        },
        {
            name: 'panel-change',
            des: '当日期面板改变时触发',
            params: '(value, props, date, mode, view)',
        },
        {
            name: 'visible-change',
            des: '当 DatePicker 的下拉列表出现/消失时触发',
            params: '(value, props, isShow)',
        },
        {
            name: 'clear',
            des: '点击清空图标，清空输入框的值后抛出的事件',
            params: '(value, props)',
        },
    ],
    slots: [],
    refs: [],
};
